# populate_test_data.py
import sys
import os
from datetime import datetime, timedelta

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from app import create_app, db
from models.models import RawNews, ProcessedNews

def populate_test_data():
    """填充测试数据"""
    app = create_app()

    with app.app_context():
        # 清空现有数据
        ProcessedNews.query.delete()
        RawNews.query.delete()
        db.session.commit()

        # 添加测试的原始新闻a
        raw_news_list = [
            RawNews(
                title="华为发布新款智能手机",
                content="华为技术有限公司今日发布了全新的智能手机系列，该产品采用了最新的芯片技术。",
                source_url="http://example.com/news1",
                publish_date=datetime.utcnow() - timedelta(days=1),
                processed=False
            ),
            RawNews(
                title="特斯拉推出新车型",
                content="特斯拉公司推出了全新的电动汽车车型，该车型具有更长的续航里程。",
                source_url="http://example.com/news2",
                publish_date=datetime.utcnow() - timedelta(hours=2),
                processed=False
            ),
            RawNews(
                title="比亚迪新能源车销量创新高",
                content="比亚迪汽车公布的最新销量数据显示，其新能源汽车销量再创新高。",
                source_url="http://example.com/news3",
                publish_date=datetime.utcnow() - timedelta(days=3),
                processed=True  # 已处理
            )
        ]

        db.session.add_all(raw_news_list)
        db.session.commit()

        # 添加一条已处理的新闻
        processed_news = ProcessedNews(
            raw_news_id=raw_news_list[2].id,
            title=raw_news_list[2].title,
            publish_date=raw_news_list[2].publish_date,
            involved_entities=[
                {"text": "比亚迪", "type": "ORG"},
                {"text": "新能源汽车", "type": "PRODUCT"}
            ],
            involved_brands=["比亚迪"],
            topics=["销量数据"],
            event_description="比亚迪汽车公布的最新销量数据显示，其新能源汽车销量再创新高。",
            board_summary="比亚迪新能源车销量创新高",
            news_score=8.5,
            hotness=7.2
        )

        db.session.add(processed_news)
        db.session.commit()

        print("测试数据填充完成！")
        print(f"添加了 {len(raw_news_list)} 条原始新闻")
        print(f"其中 1 条已处理，{len(raw_news_list)-1} 条未处理")
        print(f"添加了 1 条已处理的新闻")
        print(f"添加的已处理的新闻为：{processed_news.title}")
        print(f"添加的已处理的新闻的摘要为：{processed_news.board_summary}")
        print(f"添加的已处理的新闻的分数为：{processed_news.news_score}")
        print(f"添加的已处理的新闻的热度为：{processed_news.hotness}")
        print(f"添加的已处理的新闻的实体为：{processed_news.involved_entities}")
        print(f"添加的已处理的新闻的品牌为：{processed_news.involved_brands}")
        print(f"添加的已处理的新闻的专题为：{processed_news.topics}")
        print(f"添加的已处理的新闻的描述为：{processed_news.event_description}")
        print(f"添加的已处理的新闻的发布时间为：{processed_news.publish_date}")
        print(f"添加的已处理的新闻的创建时间为：{processed_news.processing_time}")
        print(f"添加的已处理的新闻的ID为：{processed_news.id}")
        print(f"添加的已处理的新闻的标题为：{processed_news.title}")
        print(f"添加的已处理的新闻的URL为：{processed_news.source_url}")
        print(f"添加的已处理的新闻的已处理状态为：{processed_news.processed}")


if __name__ == '__main__':
    populate_test_data()
